import android.hardware.Camera
import android.media.CamcorderProfile
import android.media.MediaRecorder
import android.util.Log
import java.io.IOException

object VideoRecorder {

    private var mediaRecorder: MediaRecorder? = null
    private var isRecording = false

//    fun startRecording(outputFile: String, camera: Camera) {
//        if (isRecording) {
//            Log.d("VideoRecorder", "Already recording.")
//            return
//        }
//
//        mediaRecorder = MediaRecorder().apply {
//            try {
//                // 设置摄像头
//                setCamera(camera)
//
//                // 设置视频源
//                setVideoSource(MediaRecorder.VideoSource.CAMERA)
//
//                // 设置输出文件格式
//                setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
//
//                // 设置视频编码器
//                setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT)
//
//                // 设置视频大小和质量
//                setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH))
//
//                // 设置输出文件路径
//                setOutputFile(outputFile)
//
//                // 准备录制
//                prepare()
//
//                // 开始录制
//                start()
//
//                isRecording = true
//            } catch (e: IllegalStateException) {
//                Log.e("VideoRecorder", "Failed to start recording: ${e.message}")
//            } catch (e: IOException) {
//                Log.e("VideoRecorder", "Failed to start recording: ${e.message}")
//            }
//        }
//    }

    fun startRecording(outputFile: String, camera: Camera) {
        if (isRecording) {
            Log.d("VideoRecorder", "Already recording.")
            return
        }

        camera.unlock() // 锁定

        mediaRecorder = MediaRecorder().apply {
            try {
                // 设置摄像头
                setCamera(camera)

                // 设置视频源
                setVideoSource(MediaRecorder.VideoSource.CAMERA)

                // 设置输出文件路径
                setOutputFile(outputFile)

                // 设置输出文件格式（请注意：将此设置移到此处）
                setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)

                // 设置视频编码器
                setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT)

                // 设置视频大小和质量
                setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH))

                // 准备录制
                prepare()

                // 开始录制
                start()

                isRecording = true
            } catch (e: IllegalStateException) {
                Log.e("VideoRecorder", "Failed to start recording: ${e.message}")
            } catch (e: IOException) {
                Log.e("VideoRecorder", "Failed to start recording: ${e.message}")
            }
        }
    }


    fun stopRecording() {
        if (!isRecording) {
            Log.d("VideoRecorder", "Not currently recording.")
            return
        }

        mediaRecorder?.apply {
            try {
                // 停止录制
                stop()
                // 释放资源
                release()
                isRecording = false
            } catch (e: IllegalStateException) {
                Log.e("VideoRecorder", "Failed to stop recording: ${e.message}")
            }
        }
    }
}
